k6 是用 Go 語言編寫的一種高效能的負載測試工具。具有下面幾個特點。
(詳細內容之後會介紹)
備註:
Checks: 類似斷言功能,但不會真的中斷執行,只是會返回 check 的數據百分比
Thresholds: 極限值、門檻、閾值(google翻譯XD),指測試系統性能所預期的通過 or 失敗的標準
看完介紹,就知道了他是用 JavaScript 直接進行負載測試(JavaScript 腳本 -> Go 底層運作)
相信這對專注於寫 JavaScript 的人是一大福音
有得時候光是要學好一個語言就很累了,更何況如果你還要使用應對不同框架、工具而且去學習新的語言,我相信學到好的時間成本會很高
以自身公司而言,大多都是 JavaScript 為基底的測試
所以如果團隊中能夠統一一種語言,不管是在測試、開發上,能降地學習成本 及 提高協做效率
以個人學習曲線來說,新知識、新技術、新語言是很重要,但當我們處於工作中時,若評估花費時間成本很高,那不如統一語言去開發會更好,可以降低成本)
記得先安裝 Homebrew
$ brew install k6
有兩種安裝方式,如下:
記得先安裝 Chocolatey package managerchoco install k6
直接下載官方提供的安裝檔 latest official .msi package
小弟只有試過以上這兩個作業系統
其餘作業系統安裝方式再請直接參考官方文件: Installation,操作很簡單
大致上的分類為(低中高流量每間公司定義都不一樣哦)
低流量 | 中等流量 | 高流量 |
---|---|---|
Smoke Test | Load Test | Stress Test |
Soak Test | Spike Test |
直接參考官方文檔
請建立一個 k6 的專案,並新增一個 script.js 檔案
並將以下 code直接複製貼上
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
vus: 1, //代表模擬用戶數量
duration: '1s', //代表執行時間
};
export default function () {
http.get('https://test.k6.io'); //測試目標網址
}
開啟的你的 CLI(命令列介面),直接輸入 k6 run script.js
以下為測試的結果:
其中左側各個指標 (metric) 之後會再詳細解說
恭喜你已經完成了一個負載測試腳本了
k6 官方提供的文檔其實都非常好懂,甚至都會附上很多程式碼範本讓你直接使用。
基本使只要會 JS,你就可能無痛起手了。
另外 k6 這框架大多使用的情境是以下
適用人員 | 描述 |
---|---|
開發人員與SDET | 方便我們透過K6提供的api以及CLI工具來使用開發且開發人員同常對 Javascript 也不太陌生, 他們也能快速使用 Javascript 來開發模擬真實場景的負載測試 |
DevOps和SRE | 這兩個職位都是偏運維方面的. 我們能把上面SDET開發的script拿來進行自動化地壓力測試, 確保我們的基礎建設與應用服務都還是保持著高性能的表現. 在K6開發的script內, 設定SLO, 來測試服務的運行狀況是否達標 |
QA | 更方便的寫測試案例與腳本, 跑起來也很快,還能跟Postman, Swagger等整合, 對QA來說是很方便的 |